#include "FigureManager.h"
FigureManager::FigureManager(void)
:Manager("FigureManager"),
Component("FigureManager")
{
}

FigureManager::~FigureManager(void)
{
    Log();
}

void FigureManager::addedToObject()
{
    requestMessage("AddFigure",&FigureManager::AddFigure);
}

void FigureManager::AddFigure(const Message &msg)
{
    LOAD_MSG;
    FIGURE f;
    f.name=boost::any_cast<string>(*iter++);
    f.mid=boost::any_cast<int32>(*iter++);
    f.pos.x=boost::any_cast<int32>(*iter++);
    f.pos.y=boost::any_cast<int32>(*iter++);
    f.face=(FACE)boost::any_cast<int32>(*iter++);
    f.fa=boost::any_cast<FIGURE_ABILITY>(*iter++);
    AddObj(f);

}


int32 FigureManager::HasObj(int32 fid)
{
   /* for(vector<FIGURE>::iterator iter=m_data.begin();iter<m_data.end();iter++)
    {
        if(iter->fid==fid)
        {
            return iter->GetID();
        }
    }*/
    return -1;
}

int32 FigureManager::GetFidFromCell(WorldPoint p)
{
    /*for(vector<FIGURE>::iterator iter=m_data.begin();iter<m_data.end();iter++)
    {
        if(iter->pos==p)
        {
            return iter->GetID();
        }
    }*/
    return -1;
}
//
//D3DXVECTOR3 FigureManager::GetMidPos(int32 fid)
//{
//    if(m_data.size()<=fid)
//        return D3DXVECTOR3(0,0,0);
//    return m_data[fid].aabb->m_center;
//}
//
//

//
void FigureManager::Log()
{
    _log("Figure:\n");
    //for(vector<FIGURE>::iterator iter=m_data.begin();iter<m_data.end();iter++)
    //{
    //    char tmp[256];
    //    sprintf(tmp,"id:%d\tmodel id:%d\tfigure name:%s\tpos x:%f y:%f\t\tface:%d\n",
    //        iter->GetID(),iter->mid,iter->name,iter->pos.x,iter->pos.y,iter->face);
    //    _log(tmp);
    //}
}
//
//int32 FigureManager::GetMid(int32 id)
//{
//    /*for(vector<FIGURE>::iterator iter=m_data.begin();iter<m_data.end();iter++)
//    {
//    if(iter->id==fid)
//    {
//    return iter->mid;
//    }
//    }
//    return -1;*/
//    if(m_data.size()>id)
//        return m_data[id].mid;
//    return -1;
//}
//
//bool FigureManager::AddVB(int32 id,LPDIRECT3DVERTEXBUFFER9 vb,int32 count)
//{
//    /*for(vector<FIGURE>::iterator iter=m_data.begin();iter<m_data.end();iter++)
//    {
//    if(iter->id==id)
//    {
//    iter->VB[iter->nVB].pVB=vb;
//    iter->VB[iter->nVB].count=count;
//    iter->nVB++;
//    return true;
//    }
//    }
//    return false;*/
//    if(m_data.size()>id)
//    {
//        m_data[id].VB[m_data[id].nVB].pVB=vb;
//        m_data[id].VB[m_data[id].nVB].count=count;
//        m_data[id].nVB++;
//        return true;
//    }
//    return false;
//}
//
//bool FigureManager::ClearVB()
//{
//    for(vector<FIGURE>::iterator iter=m_data.begin();iter<m_data.end();iter++)
//    {
//        for(int i=0;i<iter->nVB;i++)
//        {
//            iter->VB[i].count=0;
//            iter->VB[i].pVB->Release();
//        }
//        iter->nVB=0;
//    }
//    return true;
//}